/****************************************
*  This file created using "Writer B"   *
*      a program written by CTonk       *
*          ctonk87@hotmail.com          *
*     [timestamp 02/20/06  12:50:06]    *
****************************************/

// Room.h

#ifndef H_ROOM
#define H_ROOM

class Creature; // Necessary predeclaration

class Room
{
	private:
		int		_vnum;
		int		_area;
		int		_sector;
		char*	_name; // Array set with length 50
		char*	_descolor; // Array set with length 3
		char*	_desc; // Array set with length MAX_INPUT_BUFFER
		Exit*	_exit; // Array set with length 6
		bool	_noexit;
		Magiclist< Creature* > _clist;
		Magiclist< Object* > _olist;

	public:
		// Constructors...
		Room();
		Room( Room& );
		~Room();

		// Operators...
		Room& operator = ( Room& );

		// Public accessor methods...
		int		GetVnum();
		void	SetVnum( int );
		int		GetArea();
		void	SetArea( int );
		int		GetSector();
		void	SetSector( int );
		char*	GetName( void );
		char	GetName( int );
		void	SetName( char* );
		void	SetName( const char* );
		void	SetName( int, char );
		char*	GetDesc( void );
		char	GetDesc( int );
		void	SetDesc( char* );
		void	SetDesc( const char* );
		void	SetDesc( int, char );
		char*	GetDescolor();
		Exit*	GetExit( void );
		Exit&	GetExit( int );
		void	SetExit( Exit& );
		Magiclist< Creature* >& GetClist();
		Magiclist< Object* >& GetOlist();

		// Other methods...
		void	Add( Creature* );
		void	Remove( Creature* );
		bool	There( Creature* );
		Creature* GetC( int );
		void	Add( Object* );
		void	Remove( Object* );
		bool	There( Object* );
		Object* GetO( int );
		void	SetNoexit( bool );
		bool	NoExits();
		void	Display( std::ostream& );
		void	Display( std::string& );
		void	Save( std::ofstream& );
		void	Load( std::ifstream& );

};


#endif // #ifndef H_ROOM
